// 不需要导出，因为人家是直接引用这个js文件
import router from "@/router";
import store from '@/store';/*引入store，就是为了引入token*/
import NProgress from 'nprogress'; /*引入进度条*/
import 'nprogress/nprogress.css'/*引入进度条样式*/


// 定义一个白名单
const whiteList = ['/login', '/404']

// ===============前置守卫===================
// next是前置守卫必须执行的钩子，next必须执行，不执行页面就挂了
// next（） 放过
// next（false）跳转终止
// next（地址）跳转到某个地址

router.beforeEach(async (to, from, next) => {
  NProgress.start()/*开启进度条*/

//============有token
  if (store.getters.token) {
    if (to.path === '/login') {
      //  如果是去login就跳转
      next('/')
    } else {
      if (!store.getters.userid){
        await store.dispatch('user/getUserInfo')
      }

      next()
    }
  }
  // =========没有token
  else {
    // whiteList.some((value) => {
    //   return value === to.path
    // })
    // 在白名单内
    if (whiteList.indexOf(to.path) > -1) {
      next()
    }
    // 不在白名单内
    else {
      next('/login')
    }
  }
  NProgress.done()
})
// ===============后置守卫===================

router.afterEach(() => {
  NProgress.done()
})
